

/*
 * main.c
 */

#include <msp430.h>
#include <stdio.h>
#include "init.h"
#include "uart.h"

cella cArray[500];
char buffer[1000];
char buffer2[1000];

extern volatile unsigned int contatore, invio;
extern volatile unsigned char RXbuff[], W_PTR, R_PTR;

void main(void) {
	int ris, file = 0;
	char messaggio[16], req[8] = "pi\0", carattere = 0, comando;
    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer

    P4DIR |= BIT7;
    P4OUT |= BIT7;
    P4OUT = 0;
    /// inizializzo il clock a 24.5 MHz
    setDCO(FDCO);
    initTIMER(FDCO);
    /// initialize UART1 per comunicazioni con PC
    initUART1(19200, FDCO);
	/// inizializza UART0 per comunicazioni con altra scheda
	initUART0(38400, FDCO);
	_bis_SR_register(GIE);
	/// messaggino di benvenuto
	printf("Unita' centrale attiva \n\r");
	while(1){
//		if((contatore & 1) == 1){
//			contatore = 0;
//			/// ciclo infinito dei messaggio
//			Send(file, req);
//
//			}
//			ris =  Receive(file, messaggio);
//			if (ris == 2){
//			/// ottenuto il messaggio e inviamo qualcosa alla scheda server
//				printf("ricevuto il messaggio \n\r");
//				P4OUT |= BIT7;
//				while(1);
//		}
		if (invio == 1){
			invio = 0;
			while (!(UCA0IFG & UCTXIFG));             // USCI_A0 TX buffer ready?
			UCA0TXBUF = carattere;
			carattere++;
		}

		if(W_PTR != R_PTR){
			/// ricevuto un carattere dalla seriale 0
			comando = RXbuff[R_PTR++];
			R_PTR &= 7;
			printf("ricevuto il byte %d\n", comando);
		}
	}
}
